"""
@author: 李凌飞
@date: 2025-04-06
@description: 查询name字段为空的JSON文件
@question:现在有一批处理好的json文件，而有些json处理结果不好导致name键为空，需要在几千份文件中找到这些文件。 
@output: 返回name字段为空的文件名称列表，会导出为json文件
"""
import os
import json

def find_null_name_files(data_dir):
    """查找name字段为空的JSON文件"""
    null_name_files = []
    
    try:
        # 遍历目录下的所有文件
        for filename in os.listdir(data_dir):
            if filename.endswith('.json'):
                file_path = os.path.join(data_dir, filename)
                try:
                    with open(file_path, 'r', encoding='utf-8') as f:
                        data = json.load(f)
                        # 检查base_info中的name字段是否为空
                        if 'base_info' in data and data['base_info'].get('name', '') == '':
                            null_name_files.append(filename)
                            print(f"找到空name文件: {filename}")
                except Exception as e:
                    print(f"处理文件 {filename} 时出错: {str(e)}")
                    
        # 将结果保存为JSON文件
        output_path = 'null_name_files.json'
        with open(output_path, 'w', encoding='utf-8') as f:
            json.dump(null_name_files, f, ensure_ascii=False, indent=4)
            
        print(f"\n处理完成:")
        print(f"- 共发现 {len(null_name_files)} 个name为空的文件")
        print(f"- 结果已保存至: {output_path}")
        
    except Exception as e:
        print(f"执行过程中出错: {str(e)}")
        
if __name__ == "__main__":
    # 指定要扫描的JSON文件目录
    data_dir = r'C:\Users\lenovo\Desktop\all_external_json_3800+'  
    find_null_name_files(data_dir)
